数据库完整性主要作用体现在哪些方面
数据库完整性主要作用体现在以下方面:
实体完整性:实体完整性指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。
域完整性:是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
参照完整性:属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性。通常,在客观现实中的实体之间存在一定联系,在关系模型中实体及实体间的联系都是以关系进行描述,因此,操作时就可能存在着关系与关系间的关联和引用。
用户定义完整性:是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。
实体规则完整性:若属性A是基本关系R的主属性,则属性A不能取空值,即主属性不可为空值。其中的空值(NULL)不是0,也不是空隔或空字符串,而是没有值。实际上,空值是指暂时“没有存放的值”、“不知道”或“无意义”的值。由于主键是实体数据(记录)的惟一标识,若主属性取空值,关系中就会存在不可标识(区分)的实体数据(记录),这与实体的定义矛盾,而对于非主属性可以取空值(NULL),因此,将此规则称为实体完整性规则。如学籍关系(表)中主属性“学号”(列)中不能有空值,否则无法操作调用学籍表中的数据(记录)。
数据库完整性主要分为以下这些:
实体完整性(Entity Integrity)。明确规定数据表的每一行在表中是唯一的实体。如表中定义的UNIQUE PRIMARYKEY和IDENTITY约束。
域完整性(Domain Integrity)。指数据库表中的列必须满足某种特定的数据类型或约束。其中,约束又包括取值范围、精度等规定。如表中的CHECK、FOREIGN KEY约束和DEFAULT、NOT NULL等要求。
参照完整性(Referential Integrity)。是指任何两表的主关键字和外关键字的数据要对应一致,确保表之间数据的一致性,以防止数据丢失或造成混乱。主要作用为:禁止在从表中插入包含主表中不存在的关键字的数据行;禁止可导致从表中的相应值孤立的主表中的外关键字值改变;禁止删除在从表中的有对应记录的主表记录。
用户定义完整性(User-defined Integrity)。是针对某个特定关系数据库的约束条件,可以反映某一具体应用所涉及的数据必须满足的语义要求。SQL Server提供了定义和检验这类完整性的机制,以便用统一的系统方法进行处理,而不是用应用程序承担此功能。其他完整性类型都支持用户定义的完整性。